package com.kavin.collection.es;

import org.springframework.core.annotation.AliasFor;
import org.springframework.data.elasticsearch.annotations.*;

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented
@Inherited
public @interface Field {

    @AliasFor("name")
    String value() default ""; //属性别名

    @AliasFor("value")
    String name() default ""; //属性别名

    FieldType type() default FieldType.Auto; //属性类型，默认自动根据参数类型自动属性的类型

 	boolean index() default true; //默认情况下分词

    DateFormat format() default DateFormat.none; //时间格式化

    String pattern() default "";

    boolean store() default false; //默认情况下不存储原文

    String searchAnalyzer() default ""; //指定字段搜索时使用的分词器

    String indexAnalyzer() default "";//指定字段建立索引时指定的分词器

    String[] ignoreFields() default {};//忽略某些字段

    //以下是一些不常用的设置
    boolean includeInParent() default false;
    String[] copyTo() default {};
    int ignoreAbove() default -1;
    boolean coerce() default true;
    boolean docValues() default true;
    boolean ignoreMalformed() default false;
    IndexOptions indexOptions() default IndexOptions.none;
    boolean indexPhrases() default false;
    IndexPrefixes[] indexPrefixes() default {};
    boolean norms() default true;
    String nullValue() default "";
    int positionIncrementGap() default -1;
    Similarity similarity() default Similarity.Default;
    TermVector termVector() default TermVector.none;
    double scalingFactor() default 1;
    int maxShingleSize() default -1;
}
